package com.ysh.service;

import com.github.pagehelper.Page;
import com.ysh.pojo.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * 用户模块业务层接口
 */
public interface UserService {
    /**
     * 新增用户信息
     * @param user
     * @return
     */
    public boolean save(User user);

    /**
     * 修改用户信息
     * @param user
     * @return
     */
    public boolean update(User user);

    /**
     * 删除用户
     * @param uuid
     * @return
     */
    public boolean delete(Integer uuid);

    /**
     * 查询单个用户信息
     * @param uuid
     * @return
     */
    public User get(Integer uuid);

    /**
     * 分页查询
     * @param page 当前页，从1开始
     * @param size 每页显示记录数
     * @return
     */
    @Transactional(readOnly = true)
    public Page<User> getAll(Integer page, Integer size);

    /**
     * 模糊查询
     * @param user 条件，封装成对象
     * @param page 当前页
     * @param size 每页条数
     * @return
     */
    @Transactional(readOnly = true)
    public Page<User> getUsers(User user, Integer page, Integer size);

    /**
     * 根据用户名和密码登录
     * @param userName  用户名
     * @param password  密码
     * @return
     */
    // 注意：数据层操作方法名不要和业务层方法名称混淆，通常数据层仅反映出和数据库之间的信息交换
    @Transactional(readOnly = true)
    public User login(String userName, String password);
}
